package com.whfc.cncit.helmet.util;

import com.whfc.common.util.DateUtil;
import org.springframework.util.StringUtils;

import java.util.Date;

/**
 * @Description:
 * @author: xugcheng
 * @version: 1.0
 * @date: 2019/11/5 14:09
 */
public class CncitMsgUtil {

    public static final double GPS_M_MULTIPLY = 60D;

    public static final String DATE_TIME_FORMAT = "ddMMyy-hhmmss";

    /**
     * 度分转换经度
     *
     * @param lngStr
     * @return
     */
    public static double parseLng(String lngStr) {
        //11424.89409 (dddmm.mmmm)
        double lng = 0;
        if (!StringUtils.isEmpty(lngStr) && lngStr.length() > 3) {
            String d = lngStr.substring(0, 3);
            String m = lngStr.substring(3);
            double lngD = Double.parseDouble(d);
            double lngM = Double.parseDouble(m);
            lng = lngD + lngM / GPS_M_MULTIPLY;
        }
        return lng;
    }

    /**
     * 度分转换纬度
     *
     * @param latStr
     * @return
     */
    public static double parseLat(String latStr) {
        //3028.53985 (ddmm.mmmm)
        double lat = 0;
        if (!StringUtils.isEmpty(latStr) && latStr.length() > 2) {
            String d = latStr.substring(0, 2);
            String m = latStr.substring(2);
            double latD = Double.parseDouble(d);
            double latM = Double.parseDouble(m);
            lat = latD + latM / GPS_M_MULTIPLY;
        }
        return lat;
    }

    /**
     * 转换时间
     *
     * @param timeStr
     * @return
     */
    public static Date parseTime(String timeStr) {
        //251019-070905
        Date gmtTime = DateUtil.parseDate(timeStr, DATE_TIME_FORMAT);
        if (gmtTime != null) {
            return DateUtil.addHours(gmtTime, 8);
        }
        return new Date();
    }

    /**
     * 解析浮点数
     *
     * @param str
     * @return
     */
    public static double parseDouble(String str) {
        double value = 0;
        if (!StringUtils.isEmpty(str)) {
            try {
                value = Double.parseDouble(str);
            } catch (Exception ex) {

            }
        }
        return value;
    }

    /**
     * 解析整数
     *
     * @param str
     * @return
     */
    public static int parseInt(String str) {
        int value = 0;
        if (!StringUtils.isEmpty(str)) {
            try {
                value = Integer.parseInt(str);
            } catch (Exception ex) {

            }
        }
        return value;
    }

    /**
     * 按位取值
     *
     * @param i
     * @param bitIndex
     * @return
     */
    public static int getBitValue(int i, int bitIndex) {
        return (i >> bitIndex) & 0x01;
    }
}
